import os
from pathlib import Path
from dotenv import load_dotenv

# 项目根目录（假设settings.py位于项目根目录/config/下，若位置不同需调整parent层级）
BASE_DIR = Path(__file__).resolve().parent.parent

# 加载.env文件（优先读取项目根目录下的.env）
env_path = BASE_DIR / ".env"
if env_path.exists():
    load_dotenv(env_path)
else:
    print(f"警告：未找到.env文件，将使用系统环境变量或默认值（路径：{env_path}）")

# -------------------------- 火山大模型配置 --------------------------
# 从环境变量读取，无默认值（必须在.env中配置）
VOLCANO_API_KEY = os.getenv("VOLCANO_API_KEY")
# 从环境变量读取，有默认值
VOLCANO_API_URL = os.getenv(
    "VOLCANO_API_URL",
    "https://ark.cn-beijing.volces.com/api/v3/chat/completions"
)
VOLCANO_MODEL_NAME = os.getenv(
    "VOLCANO_MODEL_NAME",
    "doubao-seed-1-6-250615"
)

# -------------------------- zxy_get 接口配置（新增） --------------------------
# zxy_get 基础API地址（默认值为zxy_get代码中的BASE_URL，可通过.env覆盖）
ZXY_API_BASE_URL = os.getenv(
    "ZXY_API_BASE_URL",
    "https://zongsing.com/prod-api"
)
# zxy_get 认证密钥（无默认值，必须在.env中配置，否则接口调用失败）
ZXY_API_SECRET = os.getenv("ZXY_API_SECRET")

# -------------------------- 文件路径配置 --------------------------
DEFAULT_PPT_PATH = os.getenv(
    "PPT_PATH",
    str(BASE_DIR / "input" / "presentation.pptx")
)
DEFAULT_VIDEO_OUTLINE_PATH = os.getenv(
    "VIDEO_OUTLINE_PATH",
    str(BASE_DIR / "input" / "video_outline.txt")
)
DEFAULT_OUTPUT_DIR = os.getenv(
    "OUTPUT_DIR",
    str(BASE_DIR / "output")
)
DEFAULT_IMAGE_DIR = os.getenv(
    "IMAGE_DIR",
    str(BASE_DIR / "downloaded_images")
)
# 本地达人路径（优先从.env读取，无默认值则使用硬编码路径）
LOCAL_INFLUENCER_PATH = os.getenv(
    "LOCAL_INFLUENCER_PATH",
    r"D:\众灿\视频脚本创作-coding（邓海模块）\整体代码\input\达人主页"
)

# -------------------------- 默认参数配置 --------------------------
DEFAULT_URL = os.getenv(
    "DEFAULT_URL",
    "https://www.xiaohongshu.com/user/profile/6549e5640000000004008716"
)
DEFAULT_CREATOR_STYLE_DESC = os.getenv(
    "CREATOR_STYLE_DESC",
    "评测类"
)
DEFAULT_BRAND_NAME = os.getenv(
    "BRAND_NAME",
    "九牧黑魔方轻智能马桶（九牧黑魔方）"
)
DEFAULT_ADDITIONAL_INFO = os.getenv("ADDITIONAL_INFO", "")
DEFAULT_DOWNLOAD_IMAGES = os.getenv("DOWNLOAD_IMAGES", "False").lower() == "true"

# -------------------------- API服务配置 --------------------------
API_HOST = os.getenv("API_HOST", "0.0.0.0")
API_PORT = int(os.getenv("API_PORT", "8000"))

# -------------------------- 飞书配置 --------------------------
# 从环境变量读取，无默认值（必须在.env中配置）
FEISHU_APP_ID = os.getenv("FEISHU_APP_ID")
FEISHU_APP_SECRET = os.getenv("FEISHU_APP_SECRET")
GRAPHIC_OUTLINE_TEMPLATE_SPREADSHEET_TOKEN = os.getenv("GRAPHIC_OUTLINE_TEMPLATE_SPREADSHEET_TOKEN")
GRAPHIC_OUTLINE_TEMPLATE_URL = os.getenv("GRAPHIC_OUTLINE_TEMPLATE_URL")
FEISHU_FOLDER_TOKEN = os.getenv("FEISHU_FOLDER_TOKEN")

# -------------------------- 目录初始化 --------------------------
for directory in [DEFAULT_OUTPUT_DIR, DEFAULT_IMAGE_DIR, BASE_DIR / "input"]:
    os.makedirs(directory, exist_ok=True)

# -------------------------- 配置校验（更新必填变量列表） --------------------------
required_env_vars = [
    "VOLCANO_API_KEY",
    "FEISHU_APP_ID",
    "FEISHU_APP_SECRET",
    "GRAPHIC_OUTLINE_TEMPLATE_SPREADSHEET_TOKEN",
    "GRAPHIC_OUTLINE_TEMPLATE_URL",
    "ZXY_API_SECRET"  # 新增zxy_get密钥为必填项
]
missing_vars = [var for var in required_env_vars if not globals().get(var)]
if missing_vars:
    raise EnvironmentError(
        f"以下必填环境变量未配置，请检查.env文件：\n{', '.join(missing_vars)}"
    )


LOG_LEVEL = "INFO"
MAX_LOG_FILES = 30  # 最大日志文件数量
LOG_FILE_MAX_SIZE = 10  # 单个日志文件最大大小(MB)